For now the menu is only used in the top bar, where we can assume
that it exists "forever". This won't be the case when we start
reusing it elsewhere, so make sure we clean up after ourselves.
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1948>
this.addAction(_('Quit'), () => this._app.request_quit());
- this._appSystem.connect('installed-changed',
- () => this._updateDetailsVisibility());
+ this._signals = [];
+ this._signals.push([
+ this._appSystem,
+ this._appSystem.connect('installed-changed',
+ () => this._updateDetailsVisibility()),
+ ]);
this._updateDetailsVisibility();
}
this._detailsItem.visible = sw !== null;
}
+ /** */
+ destroy() {
+ super.destroy();
+
+ for (const [obj, id] of this._signals)
+ obj.disconnect(id);
+ this._signals = [];
+
+ this.setApp(null);
+ }
+
/**
* @returns {bool} - true if the menu is empty
*/